home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / p4 / p4-1_2b.lha / p4-1.2b / messages / vec_master.c < prev    next >
C/C++ Source or Header  |  1992-12-18  |  2KB  |  93 lines

  1. #include "p4.h"
  2. #include "sr_user.h"
  3.     
  4. #define MAX_VECLEN 10000
  5.  
  6. int msg[MAX_VECLEN];
  7.  
  8. main(argc,argv)
  9. int argc;
  10. char **argv;
  11. {
  12.     int nslaves;
  13.     int type, size, id, from;
  14.     int my_id;
  15.     char *incoming;
  16.     int done;
  17.     int i, veclen, count;
  18.     int starttime, endtime;
  19.     p4_usc_time_t start_ustime, end_ustime, rollover;
  20.  
  21.     p4_initenv(&argc,argv);
  22.     p4_create_procgroup();
  23.     
  24.     nslaves = p4_num_total_ids() - 1;
  25.     printf("number of slaves = %d\n",nslaves);
  26.     my_id = p4_get_my_id();
  27.     rollover = p4_usrollover();
  28.     printf("rollover=%d\n",rollover);
  29.     
  30.     done = FALSE;
  31.     while (!done)
  32.     {
  33.     printf("vector length: ");
  34.     scanf("%d",&veclen);
  35.     if (veclen > MAX_VECLEN)
  36.     {
  37.         printf("too big;  using %d\n",MAX_VECLEN);
  38.         veclen = MAX_VECLEN;
  39.     }
  40.     for (i=0; i<veclen; i++)
  41.         msg[i] = i;
  42.  
  43.     printf("times around loop (or 0 for end): ");
  44.     scanf("%d",&count);
  45.     
  46.     if (count == 0)
  47.         done = TRUE;
  48.     else
  49.     {
  50.         starttime = p4_clock();
  51.         start_ustime = p4_ustimer();
  52.         while (count > 0)
  53.         {
  54.         p4_sendx(DATA, 1, msg, veclen*sizeof(int), P4INT);
  55.         type = -1;
  56.         from = -1;
  57.         incoming = NULL;
  58.         p4_recv(&type, &from, &incoming, &size);
  59.         compare_vec(msg,incoming,veclen);
  60.         p4_msg_free(incoming);
  61.         count--;
  62.         }
  63.         end_ustime = p4_ustimer();
  64.         endtime = p4_clock();
  65.         printf("time %d milliseconds\n",endtime-starttime);
  66.         printf("time %d microseconds\n",end_ustime-start_ustime);
  67.     }
  68.     }
  69.  
  70.     p4_send(END, 1, msg, 0);
  71.     type = -1;
  72.     from = -1;
  73.     incoming = NULL;
  74.     p4_recv(&type, &from, &incoming, &size);
  75.     p4_msg_free(incoming);
  76.     p4_wait_for_end();
  77.     printf("master exiting normally\n");
  78. }
  79.  
  80. compare_vec(a,b,len)
  81. int a[], b[];
  82. int len;
  83. {
  84.     int i;
  85.  
  86.     for (i=0; i < len; i++)
  87.     {
  88.     if (a[i] != b[i])
  89.         printf("a[%d] = %d, b[%d] = %d\n",i,a[i],i,b[i]);
  90.     }
  91. }
  92.         
  93.